/**
 * <p>Copyright: Copyright (c) 2012</p>
 * <p>Company: 联动优势科技有限公司</p>
 * <p>Apr 25, 20131:47:58 PM</p>
 * @author Ding Zhe
 * @version 1.0
 */
package com.umpay.privi.service.sys;

import com.umpay.privi.common.ReqMessage;
import com.umpay.privi.common.ResMessage;

/** 
 * desc:用户对应的业务接口
 * <p>创建人：Ding Zhe 创建日期：Apr 25, 2013 </p>
 * @version V1.0  
 */
public interface UserServiceRemote{
	/**
	 * <p>登录</p>
	 * @author lijing 2013-5-8
	 * @param reqMessage(sysId[Y]、mediaId[Y]、password[Y]、mediaType[Y])
	 * @return ResMessage(userMediaInfo[Y]、userInfo[Y]、retCode[Y]、retMsg[Y])
	 */
	ResMessage login(ReqMessage reqMessage);
	
	/**
	 * <p>登出</p>
	 * @author lijing 2013-5-8
	 * @param reqMessage(sysId[Y]、userId[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage logout(ReqMessage reqMessage);
	
	/**
	 * <p>用户查询</p>
	 * @author Liu Guangjun 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、operRank[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、totalNum[Y]、resultList)
	 */
	ResMessage queryUsers(ReqMessage reqMessage);
	/**
	 * <p>分页查询用户</p>
	 * @author Liu Guangjun 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、operRank[Y]、startIndex[Y]、pageSize[Y]])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、totalNum[Y]、resultList)
	 */
	ResMessage  queryUsersForPage(ReqMessage reqMessage);
	/**
	 * <p>校验用户媒介是否存在</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、mediaId[Y]])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage isExistMedia(ReqMessage reqMessage);
	
	
	/**
	 * <p>添加用户</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userInf[Y]、roleList[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage addUser(ReqMessage reqMessage);
	/**
	 * <p>修改用户</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userInf[Y]、roleList[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage modifyUser(ReqMessage reqMessage);
	
	/**
	 * <p>修改用户</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId)
	 * @return ResMessage
	 */
	ResMessage getUserDetail(ReqMessage reqMessage);
	
	/**
	 * <p>预览用户权限</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId)
	 * @return ResMessage(retCode[Y]、retMsg[Y]、userInf[Y]、roleList[Y]、privilegeList[Y])
	 */
	ResMessage viewUserPrivilege(ReqMessage reqMessage);
	
	/**
	 * <p>预览用户管理员</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、userInf[Y]、managerInf[N]、managerList[N])
	 */
	ResMessage viewUserManager(ReqMessage reqMessage);
	
	/**
	 * <p>修改用户管理员</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId[Y]、managerId[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage changeUserManager(ReqMessage reqMessage);
	
	/**
	 * <p>解锁/锁定用户</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId[Y]、oprType[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage lockOrUnlockUser(ReqMessage reqMessage);
	
	/**
	 * <p>密码重置</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、userId[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、password[Y])
	 */
	ResMessage resetUserPassword(ReqMessage reqMessage);
	
	/**
	 * <p>密码重置</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、userInf[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y])
	 */
	ResMessage modify(ReqMessage reqMessage);
	
	/**
	 * <p>用户修改自身密码</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、operUserId[Y]、operRank[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、userInf[Y]、roleList[Y]、privilegeList[Y])
	 */
	ResMessage modifyPassword(ReqMessage reqMessage);
	/**
	 * <p>查询所在使用该角色的用户</p>
	 * @author lijing 2013-5-8
	 * @param ReqMessage(sysId[Y]、roleId[Y])
	 * @return ResMessage(retCode[Y]、retMsg[Y]、resultMap[Y])
	 */
	ResMessage queryUsersByRoleId(ReqMessage reqMessage);
	
	/**根据userId 查询用户信息
	 * desc:
	 * <p>创建人：liucong , Sep 3, 2014 11:55:29 AM</p>
	 * @param reqMessage
	 * @return
	 */
	ResMessage getUserInfo(ReqMessage reqMessage);
	/**
	 * ********************************************
	 * method name   : getUserCountByMobileId 
	 * description   : 根据手机号查询用户的条数
	 * @return       : ResMessage
	 * @param        : @param reqMessage
	 * @param        : @return
	 * modified      : bitao ,  2016年11月1日
	 * @see          : 
	 * *******************************************
	 */
	 ResMessage getUserCountByMobileId(ReqMessage reqMessage);
	/**
	 * ********************************************
	 * method name   : getUsersByMobileId 
	 * description   : 根据手机号查询用户
	 * @return       : ResMessage
	 * @param        : @param reqMessage
	 * @param        : @return
	 * modified      : bitao ,  2016年11月1日
	 * @see          : 
	 * *******************************************
	 */
	 ResMessage getUsersByMobileId(ReqMessage reqMessage) ;
}
